--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/backend/test_lxmf_utils_extended.py fa46dc4ce9ab50cbe66a7a9e4b3bca0140102345 (fa46dc4c) Text, 16.94 KB
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72import T7ee787base64
Tff7b72import T7ee787json
Tff7b72from T7ee787datetime Tff7b72import Te6edf3UTCTb4b4b4, Te6edf3datetime
Tff7b72from T7ee787unittestT7ee787.T7ee787mock Tff7b72import Te6edf3MagicMock
Tff7b72import T7ee787LXMF
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787lxmf_utils Tff7b72import Tb4b4b4(
Te6edf3compute_lxmf_conversation_unread_from_latest_rowTb4b4b4,
Te6edf3convert_db_lxmf_message_to_dictTb4b4b4,
Te6edf3convert_lxmf_message_to_dictTb4b4b4,
Te6edf3convert_lxmf_state_to_stringTb4b4b4,
Te6edf3lxmf_message_solving_stampsTb4b4b4,
Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8fftest_convert_lxmf_message_to_dict_basicTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3mock_msg Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3specTff7b72=Te6edf3LXMFTff7b72.Td2a8ffLXMessageTb4b4b4)
Te6edf3mock_msgTff7b72.Td2a8ffhash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffmsg_hashTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffsource_hash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffsrc_hashTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffdestination_hash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffdst_hashTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffincoming Tff7b72= Tff7b72True
Te6edf3mock_msgTff7b72.Td2a8ffstate Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENT
Te6edf3mock_msgTff7b72.Td2a8ffprogress Tff7b72= T79c0ff0.5
Te6edf3mock_msgTff7b72.Td2a8ffmethod Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffDIRECT
Te6edf3mock_msgTff7b72.Td2a8ffdelivery_attempts Tff7b72= T79c0ff1
Te6edf3mock_msgTff7b72.Td2a8fftitle Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffTest TitleTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffcontent Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffTest ContentTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8fftimestamp Tff7b72= T79c0ff1234567890
Te6edf3mock_msgTff7b72.Td2a8ffrssi Tff7b72= Tff7b72-T79c0ff50
Te6edf3mock_msgTff7b72.Td2a8ffsnr Tff7b72= T79c0ff10
Te6edf3mock_msgTff7b72.Td2a8ffq Tff7b72= T79c0ff3
Te6edf3mock_msgTff7b72.Td2a8ffget_fieldsTff7b72.Td2a8ffreturn_value Tff7b72= Tb4b4b4{Tb4b4b4}
Te6edf3result Tff7b72= Te6edf3convert_lxmf_message_to_dictTb4b4b4(Te6edf3mock_msgTb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ff6d73675f68617368Ta5d6ff"
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffTest TitleTa5d6ff"
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffTest ContentTa5d6ff"
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffprogressTa5d6ff"Tb4b4b4] Tff7b72== T79c0ff50.0
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffsentTa5d6ff"
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffdirectTa5d6ff"
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffsolving_stampsTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Tff7b72def Td2a8fftest_lxmf_message_solving_stamps_deferred_outboundTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3mock_msg Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3specTff7b72=Te6edf3LXMFTff7b72.Td2a8ffLXMessageTb4b4b4)
Te6edf3mock_msgTff7b72.Td2a8ffincoming Tff7b72= Tff7b72False
Te6edf3mock_msgTff7b72.Td2a8ffoutbound_ticket Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffstamp_cost Tff7b72= T79c0ff16
Te6edf3mock_msgTff7b72.Td2a8ffstamp Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffdefer_stamp Tff7b72= Tff7b72True
Te6edf3mock_msgTff7b72.Td2a8ffdesired_method Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffDIRECT
Te6edf3mock_msgTff7b72.Td2a8ffdefer_propagation_stamp Tff7b72= Tff7b72True
Te6edf3mock_msgTff7b72.Td2a8ffpropagation_stamp Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffstate Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffOUTBOUND
Te6edf3mock_msgTff7b72.Td2a8ffmessage_id Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffmsg_idTa5d6ff"
Te6edf3router Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3routerTff7b72.Td2a8ffpending_deferred_stamps Tff7b72= Tb4b4b4{Ta5d6ffbTa5d6ff"Ta5d6ffmsg_idTa5d6ff"Tb4b4b4: Te6edf3mock_msgTb4b4b4}
Tff7b72assert Te6edf3lxmf_message_solving_stampsTb4b4b4(Te6edf3mock_msgTb4b4b4, Te6edf3routerTb4b4b4) Tff7b72is Tff7b72True
Tff7b72def Td2a8fftest_lxmf_message_solving_stamps_false_with_ticketTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3mock_msg Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3specTff7b72=Te6edf3LXMFTff7b72.Td2a8ffLXMessageTb4b4b4)
Te6edf3mock_msgTff7b72.Td2a8ffincoming Tff7b72= Tff7b72False
Te6edf3mock_msgTff7b72.Td2a8ffoutbound_ticket Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffticketTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffstamp_cost Tff7b72= T79c0ff16
Te6edf3mock_msgTff7b72.Td2a8ffstamp Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffdefer_stamp Tff7b72= Tff7b72True
Te6edf3mock_msgTff7b72.Td2a8ffstate Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffOUTBOUND
Tff7b72assert Te6edf3lxmf_message_solving_stampsTb4b4b4(Te6edf3mock_msgTb4b4b4) Tff7b72is Tff7b72False
Tff7b72def Td2a8fftest_lxmf_message_solving_stamps_false_after_stamp_generatedTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3mock_msg Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3specTff7b72=Te6edf3LXMFTff7b72.Td2a8ffLXMessageTb4b4b4)
Te6edf3mock_msgTff7b72.Td2a8ffincoming Tff7b72= Tff7b72False
Te6edf3mock_msgTff7b72.Td2a8ffoutbound_ticket Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffstamp_cost Tff7b72= T79c0ff16
Te6edf3mock_msgTff7b72.Td2a8ffstamp Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffstamp_bytesTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffdefer_stamp Tff7b72= Tff7b72True
Te6edf3mock_msgTff7b72.Td2a8ffstate Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffOUTBOUND
Tff7b72assert Te6edf3lxmf_message_solving_stampsTb4b4b4(Te6edf3mock_msgTb4b4b4) Tff7b72is Tff7b72False
Tff7b72def Td2a8fftest_convert_lxmf_message_to_dict_includes_solving_stampsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3mock_msg Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3specTff7b72=Te6edf3LXMFTff7b72.Td2a8ffLXMessageTb4b4b4)
Te6edf3mock_msgTff7b72.Td2a8ffhash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffhashTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffsource_hash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffsrcTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffdestination_hash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffdstTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffincoming Tff7b72= Tff7b72False
Te6edf3mock_msgTff7b72.Td2a8ffoutbound_ticket Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffstamp_cost Tff7b72= T79c0ff8
Te6edf3mock_msgTff7b72.Td2a8ffstamp Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffdefer_stamp Tff7b72= Tff7b72True
Te6edf3mock_msgTff7b72.Td2a8ffdesired_method Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffDIRECT
Te6edf3mock_msgTff7b72.Td2a8ffdefer_propagation_stamp Tff7b72= Tff7b72True
Te6edf3mock_msgTff7b72.Td2a8ffpropagation_stamp Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffstate Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffOUTBOUND
Te6edf3mock_msgTff7b72.Td2a8ffmessage_id Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffmidTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffprogress Tff7b72= T79c0ff0.0
Te6edf3mock_msgTff7b72.Td2a8ffmethod Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffDIRECT
Te6edf3mock_msgTff7b72.Td2a8ffdelivery_attempts Tff7b72= T79c0ff0
Te6edf3mock_msgTff7b72.Td2a8fftitle Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffcontent Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffhiTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8fftimestamp Tff7b72= T79c0ff1
Te6edf3mock_msgTff7b72.Td2a8ffrssi Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffsnr Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffq Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffget_fieldsTff7b72.Td2a8ffreturn_value Tff7b72= Tb4b4b4{Tb4b4b4}
Te6edf3router Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3routerTff7b72.Td2a8ffpending_deferred_stamps Tff7b72= Tb4b4b4{Ta5d6ffbTa5d6ff"Ta5d6ffmidTa5d6ff"Tb4b4b4: Te6edf3mock_msgTb4b4b4}
Te6edf3result Tff7b72= Te6edf3convert_lxmf_message_to_dictTb4b4b4(Te6edf3mock_msgTb4b4b4, Te6edf3message_routerTff7b72=Te6edf3routerTb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffsolving_stampsTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72def Td2a8fftest_convert_lxmf_message_to_dict_with_attachmentsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3mock_msg Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3specTff7b72=Te6edf3LXMFTff7b72.Td2a8ffLXMessageTb4b4b4)
Te6edf3mock_msgTff7b72.Td2a8ffhash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffhashTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffsource_hash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffsrcTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffdestination_hash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffdstTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffincoming Tff7b72= Tff7b72False
Te6edf3mock_msgTff7b72.Td2a8ffstate Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffDELIVERED
Te6edf3mock_msgTff7b72.Td2a8ffprogress Tff7b72= T79c0ff1.0
Te6edf3mock_msgTff7b72.Td2a8ffmethod Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffPROPAGATED
Te6edf3mock_msgTff7b72.Td2a8ffdelivery_attempts Tff7b72= T79c0ff1
Te6edf3mock_msgTff7b72.Td2a8fftitle Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffcontent Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ff"
Te6edf3mock_msgTff7b72.Td2a8fftimestamp Tff7b72= T79c0ff1234567890
Te6edf3mock_msgTff7b72.Td2a8ffrssi Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffsnr Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffq Tff7b72= Tff7b72None
T8b949e# Setup fields
Te6edf3fields Tff7b72= Tb4b4b4{
Te6edf3LXMFTff7b72.Td2a8ffFIELD_FILE_ATTACHMENTSTb4b4b4: Tb4b4b4[Tb4b4b4(Ta5d6ff"Ta5d6fffile1.txtTa5d6ff"Tb4b4b4, Ta5d6ffbTa5d6ff"Ta5d6ffcontent1Ta5d6ff"Tb4b4b4)Tb4b4b4]Tb4b4b4,
Te6edf3LXMFTff7b72.Td2a8ffFIELD_IMAGETb4b4b4: Tb4b4b4(Ta5d6ff"Ta5d6ffpngTa5d6ff"Tb4b4b4, Ta5d6ffbTa5d6ff"Ta5d6ffimage_dataTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3LXMFTff7b72.Td2a8ffFIELD_AUDIOTb4b4b4: Tb4b4b4(Ta5d6ff"Ta5d6ffvoiceTa5d6ff"Tb4b4b4, Ta5d6ffbTa5d6ff"Ta5d6ffaudio_dataTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4}
Te6edf3mock_msgTff7b72.Td2a8ffget_fieldsTff7b72.Td2a8ffreturn_value Tff7b72= Te6edf3fields
Te6edf3result Tff7b72= Te6edf3convert_lxmf_message_to_dictTb4b4b4(Te6edf3mock_msgTb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fffile_attachmentsTa5d6ff"Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fffile_nameTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6fffile1.txtTa5d6ff"
Tff7b72assert Tb4b4b4(
Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fffile_attachmentsTa5d6ff"Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fffile_bytesTa5d6ff"Tb4b4b4]
Tff7b72== Te6edf3base64Tff7b72.Td2a8ffb64encodeTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffcontent1Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Tb4b4b4)
Tb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffimage_typeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffpngTa5d6ff"
Tff7b72assert Tb4b4b4(
Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffimage_bytesTa5d6ff"Tb4b4b4]
Tff7b72== Te6edf3base64Tff7b72.Td2a8ffb64encodeTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffimage_dataTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Tb4b4b4)
Tb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffaudioTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffaudio_modeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffvoiceTa5d6ff"
Tff7b72assert Tb4b4b4(
Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffaudioTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffaudio_bytesTa5d6ff"Tb4b4b4]
Tff7b72== Te6edf3base64Tff7b72.Td2a8ffb64encodeTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffaudio_dataTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Tb4b4b4)
Tb4b4b4)
Tff7b72def Td2a8fftest_convert_lxmf_state_to_stringTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3mock_msg Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3states Tff7b72= Tb4b4b4{
Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffGENERATINGTb4b4b4: Ta5d6ff"Ta5d6ffgeneratingTa5d6ff"Tb4b4b4,
Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffOUTBOUNDTb4b4b4: Ta5d6ff"Ta5d6ffoutboundTa5d6ff"Tb4b4b4,
Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENDINGTb4b4b4: Ta5d6ff"Ta5d6ffsendingTa5d6ff"Tb4b4b4,
Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENTTb4b4b4: Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4,
Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffDELIVEREDTb4b4b4: Ta5d6ff"Ta5d6ffdeliveredTa5d6ff"Tb4b4b4,
Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffREJECTEDTb4b4b4: Ta5d6ff"Ta5d6ffrejectedTa5d6ff"Tb4b4b4,
Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffCANCELLEDTb4b4b4: Ta5d6ff"Ta5d6ffcancelledTa5d6ff"Tb4b4b4,
Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffFAILEDTb4b4b4: Ta5d6ff"Ta5d6fffailedTa5d6ff"Tb4b4b4,
Tb4b4b4}
Tff7b72for Te6edf3stateTb4b4b4, Te6edf3expected Tff7b72in Te6edf3statesTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3mock_msgTff7b72.Td2a8ffstate Tff7b72= Te6edf3state
Tff7b72assert Te6edf3convert_lxmf_state_to_stringTb4b4b4(Te6edf3mock_msgTb4b4b4) Tff7b72== Te6edf3expected
Tff7b72def Td2a8fftest_convert_db_lxmf_message_to_dictTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3db_msg Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffidTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffhash_hexTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffsrc_hexTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdestination_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdst_hexTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdeliveredTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffprogressTa5d6ff"Tb4b4b4: T79c0ff100.0Tb4b4b4,
Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdirectTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdelivery_attemptsTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffnext_delivery_attempt_atTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTitleTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffContentTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffimage_typeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffjpgTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffimage_bytesTa5d6ff"Tb4b4b4: Te6edf3base64Tff7b72.Td2a8ffb64encodeTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffimgTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffaudioTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffaudio_modeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffoggTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffaudio_bytesTa5d6ff"Tb4b4b4: Te6edf3base64Tff7b72.Td2a8ffb64encodeTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffaudioTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6fffile_attachmentsTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6fffile_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fff.txtTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffile_bytesTa5d6ff"Tb4b4b4: Te6edf3base64Tff7b72.Td2a8ffb64encodeTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6fffileTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4: T79c0ff1234567890Tb4b4b4,
Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4: Tff7b72-T79c0ff60Tb4b4b4,
Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4: T79c0ff5Tb4b4b4,
Ta5d6ff"Ta5d6ffqualityTa5d6ff"Tb4b4b4: T79c0ff2Tb4b4b4,
Ta5d6ff"Ta5d6ffis_spamTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffpath_hops_at_sendTa5d6ff"Tb4b4b4: T79c0ff4Tb4b4b4,
Ta5d6ff"Ta5d6ffpath_interface_at_sendTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffRNode InterfaceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcreated_atTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff2023-01-01 12:00:00Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffupdated_atTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff2023-01-01 12:05:00Ta5d6ff"Tb4b4b4,
Tb4b4b4}
T8b949e# Test with attachments
Te6edf3result Tff7b72= Te6edf3convert_db_lxmf_message_to_dictTb4b4b4(Te6edf3db_msgTb4b4b4, Te6edf3include_attachmentsTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffimage_bytesTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72None
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffcreated_atTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff"Ta5d6ffZTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffpath_hops_at_sendTa5d6ff"Tb4b4b4] Tff7b72== T79c0ff4
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffpath_interface_at_sendTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffRNode InterfaceTa5d6ff"
T8b949e# Test without attachments
Te6edf3result_no_att Tff7b72= Te6edf3convert_db_lxmf_message_to_dictTb4b4b4(Te6edf3db_msgTb4b4b4, Te6edf3include_attachmentsTff7b72=Tff7b72FalseTb4b4b4)
Tff7b72assert Te6edf3result_no_attTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffimage_bytesTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72None
Tff7b72assert Te6edf3result_no_attTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffimage_sizeTa5d6ff"Tb4b4b4] Tff7b72== Tffa657lenTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffimgTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3result_no_attTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffaudioTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffaudio_sizeTa5d6ff"Tb4b4b4] Tff7b72== Tffa657lenTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffaudioTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3result_no_attTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fffile_attachmentsTa5d6ff"Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fffile_sizeTa5d6ff"Tb4b4b4] Tff7b72== Tffa657lenTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6fffileTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8fftest_convert_db_lxmf_message_to_dict_defaults_missing_methodTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3db_msg Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffidTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffaTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Ta5d6ff"Ta5d6ffdestination_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffprogressTa5d6ff"Tb4b4b4: T79c0ff100.0Tb4b4b4,
Ta5d6ff"Ta5d6ffdelivery_attemptsTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffnext_delivery_attempt_atTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Ta5d6ff"Tffd700{}Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4: T79c0ff1.0Tb4b4b4,
Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6ffqualityTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6ffis_spamTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffcreated_atTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff2023-01-01 12:00:00Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffupdated_atTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff2023-01-01 12:00:00Ta5d6ff"Tb4b4b4,
Tb4b4b4}
Te6edf3result Tff7b72= Te6edf3convert_db_lxmf_message_to_dictTb4b4b4(Te6edf3db_msgTb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffunknownTa5d6ff"
Tff7b72def Td2a8fftest_convert_lxmf_message_to_dict_with_replyTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3mock_msg Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3specTff7b72=Te6edf3LXMFTff7b72.Td2a8ffLXMessageTb4b4b4)
Te6edf3mock_msgTff7b72.Td2a8ffhash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffmsg_hashTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffsource_hash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffsrc_hashTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffdestination_hash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffdst_hashTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffincoming Tff7b72= Tff7b72True
Te6edf3mock_msgTff7b72.Td2a8ffstate Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENT
Te6edf3mock_msgTff7b72.Td2a8ffprogress Tff7b72= T79c0ff1.0
Te6edf3mock_msgTff7b72.Td2a8ffmethod Tff7b72= Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffDIRECT
Te6edf3mock_msgTff7b72.Td2a8ffdelivery_attempts Tff7b72= T79c0ff1
Te6edf3mock_msgTff7b72.Td2a8fftitle Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffcontent Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ffReply textTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8fftimestamp Tff7b72= T79c0ff1234567890
Te6edf3mock_msgTff7b72.Td2a8ffrssi Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffsnr Tff7b72= Tff7b72None
Te6edf3mock_msgTff7b72.Td2a8ffq Tff7b72= Tff7b72None
T8b949e# Reply to hash
Te6edf3reply_hash Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6fforiginal_msg_hashTa5d6ff"
Te6edf3mock_msgTff7b72.Td2a8ffget_fieldsTff7b72.Td2a8ffreturn_value Tff7b72= Tb4b4b4{T79c0ff0x30Tb4b4b4: Te6edf3reply_hashTb4b4b4}
Te6edf3result Tff7b72= Te6edf3convert_lxmf_message_to_dictTb4b4b4(Te6edf3mock_msgTb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffreply_toTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3reply_hashTff7b72.Td2a8ffhexTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8fftest_convert_db_lxmf_message_to_dict_with_replyTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3db_msg Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffidTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffhash_hexTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffsrc_hexTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdestination_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdst_hexTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdeliveredTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffprogressTa5d6ff"Tb4b4b4: T79c0ff100.0Tb4b4b4,
Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdirectTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdelivery_attemptsTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffnext_delivery_attempt_atTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTitleTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffContentTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Ta5d6ff"Tffd700{}Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4: T79c0ff1234567890Tb4b4b4,
Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4: Tff7b72-T79c0ff60Tb4b4b4,
Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4: T79c0ff5Tb4b4b4,
Ta5d6ff"Ta5d6ffqualityTa5d6ff"Tb4b4b4: T79c0ff2Tb4b4b4,
Ta5d6ff"Ta5d6ffis_spamTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffreply_to_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fforiginal_hash_hexTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcreated_atTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff2023-01-01 12:00:00Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffupdated_atTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff2023-01-01 12:05:00Ta5d6ff"Tb4b4b4,
Tb4b4b4}
Te6edf3result Tff7b72= Te6edf3convert_db_lxmf_message_to_dictTb4b4b4(Te6edf3db_msgTb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffreply_to_hashTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6fforiginal_hash_hexTa5d6ff"
Tff7b72def Td2a8fftest_compute_unread_outgoing_latest_never_unread_even_without_read_cursorTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6fflast_read_atTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4: T79c0ff1_700_000_000.0Tb4b4b4,
Tb4b4b4}
Tff7b72assert Te6edf3compute_lxmf_conversation_unread_from_latest_rowTb4b4b4(Te6edf3rowTb4b4b4) Tff7b72is Tff7b72False
Tff7b72def Td2a8fftest_compute_unread_incoming_no_read_cursor_is_unreadTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6fflast_read_atTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4: T79c0ff1_700_000_000.0Tb4b4b4,
Tb4b4b4}
Tff7b72assert Te6edf3compute_lxmf_conversation_unread_from_latest_rowTb4b4b4(Te6edf3rowTb4b4b4) Tff7b72is Tff7b72True
Tff7b72def Td2a8fftest_compute_unread_incoming_not_unread_when_read_cursor_covers_messageTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3ts Tff7b72= T79c0ff1_700_000_000.0
Te6edf3read_after_msg Tff7b72= Te6edf3datetimeTff7b72.Td2a8fffromtimestampTb4b4b4(Te6edf3ts Tff7b72+ T79c0ff60Tb4b4b4, Te6edf3UTCTb4b4b4)Tff7b72.Td2a8ffisoformatTb4b4b4(Tb4b4b4)
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6fflast_read_atTa5d6ff"Tb4b4b4: Te6edf3read_after_msgTb4b4b4,
Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4: Te6edf3tsTb4b4b4,
Tb4b4b4}
Tff7b72assert Te6edf3compute_lxmf_conversation_unread_from_latest_rowTb4b4b4(Te6edf3rowTb4b4b4) Tff7b72is Tff7b72False
Tff7b72def Td2a8fftest_compute_unread_incoming_newer_than_read_cursor_unreadTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3ts Tff7b72= T79c0ff1_700_000_000.0
Te6edf3read Tff7b72= Te6edf3datetimeTff7b72.Td2a8fffromtimestampTb4b4b4(Te6edf3ts Tff7b72- T79c0ff120Tb4b4b4, Te6edf3UTCTb4b4b4)Tff7b72.Td2a8ffisoformatTb4b4b4(Tb4b4b4)
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6fflast_read_atTa5d6ff"Tb4b4b4: Te6edf3readTb4b4b4,
Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4: Te6edf3tsTb4b4b4,
Tb4b4b4}
Tff7b72assert Te6edf3compute_lxmf_conversation_unread_from_latest_rowTb4b4b4(Te6edf3rowTb4b4b4) Tff7b72is Tff7b72True
Tff7b72def Td2a8fftest_sidebar_preview_reaction_incoming_uses_peer_nameTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3local Tff7b72= Ta5d6ff"Ta5d6ffaTa5d6ff" Tff7b72* T79c0ff32
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(
Tb4b4b4{Ta5d6ff"Ta5d6ffreactionTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffreaction_toTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffabc123Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffreaction_contentTa5d6ff"Tb4b4b4: Ta5d6ff"Tffea00\U0001f44dTa5d6ff"Tb4b4b4}Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Te6edf3localTb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffCharlieTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffCharlie reacted Tffea00\U0001f44dTa5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_reaction_outbound_from_self_is_youTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3me Tff7b72= Ta5d6ff"Ta5d6ffcTa5d6ff" Tff7b72* T79c0ff32
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(
Tb4b4b4{Ta5d6ff"Ta5d6ffreactionTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffreaction_toTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffabc123Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffreaction_contentTa5d6ff"Tb4b4b4: Ta5d6ff"Tffea00\u2764Tffea00\ufe0fTa5d6ff"Tb4b4b4}Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Te6edf3meTb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Te6edf3meTb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffDanaTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffYou reacted Tffea00\u2764Tffea00\ufe0fTa5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_prefers_non_empty_contentTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff hi Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(
Tb4b4b4{Ta5d6ff"Ta5d6ffreactionTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffreaction_toTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffabc123Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffreaction_contentTa5d6ff"Tb4b4b4: Ta5d6ff"Tffea00\U0001f44dTa5d6ff"Tb4b4b4}Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Ta5d6ff"Ta5d6ffaTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffEveTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ff hi Ta5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_telemetry_location_incomingTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3local Tff7b72= Ta5d6ff"Ta5d6ffaTa5d6ff" Tff7b72* T79c0ff32
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(
Tb4b4b4{Ta5d6ff"Ta5d6fftelemetryTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6fflatitudeTa5d6ff"Tb4b4b4: T79c0ff1.0Tb4b4b4, Ta5d6ff"Ta5d6fflongitudeTa5d6ff"Tb4b4b4: T79c0ff2.0Tb4b4b4}Tb4b4b4}Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Te6edf3localTb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffRileyTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffRiley shared their locationTa5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_telemetry_location_outbound_youTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3me Tff7b72= Ta5d6ff"Ta5d6ffcTa5d6ff" Tff7b72* T79c0ff32
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(
Tb4b4b4{Ta5d6ff"Ta5d6fftelemetryTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6fflatitudeTa5d6ff"Tb4b4b4: T79c0ff1.0Tb4b4b4, Ta5d6ff"Ta5d6fflongitudeTa5d6ff"Tb4b4b4: T79c0ff2.0Tb4b4b4}Tb4b4b4}Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Te6edf3meTb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Te6edf3meTb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffSamTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffYou shared your locationTa5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_location_request_outbound_youTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3me Tff7b72= Ta5d6ff"Ta5d6ffcTa5d6ff" Tff7b72* T79c0ff32
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffcommandsTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ff0x01Ta5d6ff"Tb4b4b4: T79c0ff1_700_000_000Tb4b4b4}Tb4b4b4]Tb4b4b4}Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Te6edf3meTb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Te6edf3meTb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffSamTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffYou sent a location requestTa5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_telemetry_battery_onlyTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fftelemetryTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffbatteryTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffcharge_percentTa5d6ff"Tb4b4b4: T79c0ff50Tb4b4b4}Tb4b4b4}Tb4b4b4}Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Ta5d6ff"Ta5d6ffaTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffTaylorTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffTaylor sent telemetryTa5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_telemetry_streamTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fftelemetry_streamTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6fftTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4}Tb4b4b4]Tb4b4b4}Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Ta5d6ff"Ta5d6ffaTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffJordanTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffJordan sent a telemetry streamTa5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_image_incomingTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffimage_typeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpngTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffimage_sizeTa5d6ff"Tb4b4b4: T79c0ff12Tb4b4b4}Tb4b4b4}Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Ta5d6ff"Ta5d6ffaTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffQuinnTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffQuinn sent an imageTa5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_image_outbound_youTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3me Tff7b72= Ta5d6ff"Ta5d6ffcTa5d6ff" Tff7b72* T79c0ff32
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffimage_typeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffjpegTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffimage_sizeTa5d6ff"Tb4b4b4: T79c0ff99Tb4b4b4}Tb4b4b4}Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Te6edf3meTb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Te6edf3meTb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffPatTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffYou sent an imageTa5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_audio_voice_noteTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffaudioTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffaudio_modeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffopusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffaudio_sizeTa5d6ff"Tb4b4b4: T79c0ff500Tb4b4b4}Tb4b4b4}Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Ta5d6ff"Ta5d6ffaTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffMorganTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffMorgan sent a voice noteTa5d6ff"
Tff7b72def Td2a8fftest_sidebar_preview_file_attachments_pluralTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3row Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fffile_attachmentsTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{Ta5d6ff"Ta5d6fffile_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffa.txtTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffile_sizeTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4}Tb4b4b4,
Tb4b4b4{Ta5d6ff"Ta5d6fffile_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffb.txtTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffile_sizeTa5d6ff"Tb4b4b4: T79c0ff2Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Tb4b4b4}
Te6edf3out Tff7b72= Te6edf3lxmf_sidebar_preview_for_conversation_latest_rowTb4b4b4(
Te6edf3rowTb4b4b4,
Te6edf3local_hashTff7b72=Ta5d6ff"Ta5d6ffdTa5d6ff" Tff7b72* T79c0ff32Tb4b4b4,
Te6edf3peer_display_nameTff7b72=Ta5d6ff"Ta5d6ffCaseyTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ffYou sent 2 filesTa5d6ff"
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────